// 导入 mongoose
const mongoose = require('mongoose')

// 连接 mongodb
// 如果连接的数据库不存在，当你执行 insert 之后就会被创建出来
mongoose.connect('mongodb://localhost:27017/unicom')

const Schema = mongoose.Schema

// 设置集合架构 (设计表结构)
// 为了建立约束  保证数据的完整性
// 这里的字段名称就是表结构中的属性名称
// 值为 js 的数据类型
const userSchema = new Schema({
    username: {
        type: String,
        required: true
    },
    age: Number,
    email: String
})

// 将文档结构发布为模型
// 使用 mongoose.model 方法把一个结构发布为模型
// 第一个参数：传入一个大写的名词的单数形式（类似构造函数名称）表示你数据库的名称
//              ---> mongoose 会自动把大写的名词字符串 转换成 小写的复数形式 用来表示集合的名称
//              ---> 例如 User 最终生成的集合的名称为 users
// 第二个参数： 架构 Schema
// 返回值： 模型对象构造函数 
const User = mongoose.model('User', userSchema);

// 使用 模型构造函数 创建数据对象
const user = new User({ username: 'admin', age: 18, email: 'admin@unicom.com' });

// 保存数据
// user.save().then((result) => {
//     console.log('保存数据成功 --->', result)
// }).catch((err) => {
//     console.log(err)
// });

// 查询保存的数据 - 查询所有数据
// User.find().then(result => {
//     console.log('----- 数据 -----')
//     console.log(result)
// }).catch(err => {
//     console.log(err)
// })

// 条件查询
// User.find({ username: 'admin' }).then(result => {
//     console.log('----- 数据 -----')
//     console.log(result)
// }).catch(err => {
//     console.log(err)
// })

// 查询匹配条件的第一个
User.findOne({ username: 'admin' }).then(result => {
    console.log('----- 数据 -----')
    console.log(result)
}).catch(err => {
    console.log(err)
})

// 更新数据
// User.findByIdAndUpdate('5cd4fe0ef181a0101ef1ba87', { age: 20 }).then(result => {
//     console.log('更新成功 ----> ', result)
// }).catch(err => {
//     console.log(err)
// })

// 删除数据
// User.remove({ username: 'admin' }).then(result => {
//     console.log('----- 删除成功 -----')
//     console.log(result)
// }).catch(err => {
//     console.log(err)
// })